汇编实验4[loop+bx]

您所在的位置:网站首页 汇编 loop指令 汇编实验4[loop+bx]

汇编实验4[loop+bx]

2023-04-19 05:46| 来源: 网络整理| 查看: 265

TASK:

(1)编程,向内存 0:200~0:23F 依次传送数据 0~63 (3FH)

(2)编程

,向内存 0:200~0:23F 依次传送数据 0~63 (3FH),程序中只能使用 9 条指令,9条指令中包括“mov ax,4c00h” 和 “int 21h”。

THINK TWICE, CODE ONCE!!!

(1)向内存 0:200~0:23F 依次传送数据 0~63,因为0~63数据是连续的, 我们可以想到应该使用循环 64 次将数据依次存入 0:200~0:23F。因为 0:200~0:23F 共 64 个内存单元, 因此每个单元正好存储 1 个字节,故使用 dl 寄存器循环存储 0~63,CX 寄存器设置为64(40h)用于存储循环次数, DS寄存器用于存储数据段地址,BX寄存器用于存储数据段偏移量。DL寄存器用于存储每次要复制的数。

(2)相对于第一题,我们可以发现,在程序执行过程中,BX寄存器的BL与DL是相等的,因此我们可以只使用BL寄存器的内容即可。

程序代码如下:

assume cs:code code segment mov ax,0000h ;1 mov ds,ax ;2 mov bx,0200h ;3 mov cx,40h ;4 s: mov ds:[bx],bl ;5 inc bx ;6 loop s ;7 mov ax,4c00h ;8 int 21h ;9 code ends end

(3)下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存 0:200 处,补全程序。上机调试,跟踪运行结果。

assume cs:code code segment mov ax, (cs) mov ds,ax mov ax,0020h mov es,ax mov bx,0 mov cx, ( 17h) s: mov al,[bx] mov es:[bx],al inc bx mov ax,4c00h int 21h code ends end 提示: (1)复制的是什么?从哪里到哪里? (2)复制的是什么?有多少个字节?你如何知道要复制的字节的数量?

这里重点说一下 mov cx,_这条指令,填写的一定是一个立即数,而不是寄存器的名字,对于 mov 寄存器,立即数 型的指令占3个字节,mov 寄存器,寄存器 型的指令占2个字节。 因此这里假设 mov cx,_ 占3个字节,其余指令已经确定。现在使用一下debug

可以得出mov ax,4c00h指令之前的指令一共占23个字节(17h),故填入的第二个指令为mov cx,17h

理解了之后,我们对(1)(2)也做出解答,

(1)复制的是代码段地址,从 CS:0~CS:16

(2)复制的是要复制的代码所占字节数量,共23个字节(17h),根据debug调试得出



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3